/**
 * Copyright (c) 2021 Coder League
 * All rights reserved.
 *
 * File：MobileSupplierGoodController.java
 * History:
 *         2021年1月16日: Initially created, Chrise.
 */
package club.coderleague.cfss.controller.good;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import club.coderleague.cfss.annotations.PassiveRequest;
import club.coderleague.cfss.annotations.Request;
import club.coderleague.cfss.controller.MobileSupplierIndexController;
import club.coderleague.cfss.domain.beans.GoodUpdateRequest;
import club.coderleague.cfss.service.good.GoodService;

/**
 * 移动端供应商商品控制器。
 * @author Chrise
 */
@Controller
@RequestMapping(MobileSupplierIndexController.REQUEST_PREFIX + "/good")
public class MobileSupplierGoodController extends MobileSupplierIndexController {
	@Autowired
	private GoodService goodService;
	
	/**
	 * 加载商品管理列表数据。
	 * @author Chrise 2021年1月10日
	 * @return 商品管理列表数据。
	 */
	@ResponseBody
	@PostMapping("/loadMgrListData.xhtml")
	@PassiveRequest("加载商品管理列表数据")
	public ModelMap loadMgrListData() {
		return super.createModel(true, this.goodService.loadMgrListData(getUserSession()));
	}
	
	/**
	 * 商品调价。
	 * @author Chrise 2021年1月12日
	 * @param goodid 商品标识。
	 * @param goodprice 商品价格。
	 * @return 调价结果。
	 */
	@ResponseBody
	@PostMapping("/adjustPrice.xhtml")
	@Request("商品调价")
	public ModelMap adjustPrice(long goodid, double goodprice) {
		this.goodService.execAdjustPrice(goodid, goodprice);
		return super.createModelOnlyStatus(true);
	}
	
	/**
	 * 前往商品编辑页面。
	 * @author Chrise 2021年1月3日
	 * @return 页面路径。
	 */
	@GetMapping("/edit.xhtml")
	@Request("前往商品编辑页面")
	public String goEditGood() {
		return "/mobile/supplier/good/edit";
	}
	
	/**
	 * 加载商品管理商品数据。
	 * @author Chrise 2021年1月11日
	 * @param goodid 商品标识。
	 * @return 商品管理商品数据。
	 */
	@ResponseBody
	@PostMapping("/loadMgrGoodData.xhtml")
	@PassiveRequest("加载商品管理商品数据")
	public ModelMap loadMgrGoodData(long goodid) {
		GoodUpdateRequest good = this.goodService.loadMgrGoodData(goodid);
		if (good == null) return super.createModelOnlyStatus(false);
		
		return super.createModel(true, good);
	}
	
	/**
	 * 新增/更新商品。
	 * @author Chrise 2021年1月5日
	 * @param data 商品数据。
	 * @param goodpicture 封面图片。
	 * @param request 请求对象。
	 * @return 新增/更新结果。
	 */
	@ResponseBody
	@PostMapping("/updateGood.xhtml")
	@Request("新增/更新商品")
	public ModelMap updateGood(GoodUpdateRequest data, MultipartFile goodpicture, HttpServletRequest request) {
		List<MultipartFile> goodpictures = ((MultipartHttpServletRequest)request).getFiles("goodpictures");
		
		String message = this.goodService.updateGood(data, goodpicture, goodpictures, getUserSession());
		if (message != null) return super.createModel(false, message);
		
		return super.createModelOnlyStatus(true);
	}
	
	/**
	 * 删除商品。
	 * @author Chrise 2021年1月11日
	 * @param goodid 商品标识。
	 * @return 删除结果。
	 */
	@ResponseBody
	@PostMapping("/deleteGood.xhtml")
	@Request("删除商品")
	public ModelMap deleteGood(long goodid) {
		this.goodService.deleteGood(goodid);
		return super.createModelOnlyStatus(true);
	}
}
